package com.gopay.common.constants.trans;

import com.gopay.common.constants.txncd.IntTxnCd;

public enum AccountingPointDef_BAK {
    /**
     * 冻结金额
     */
    accounting_point_def_09802_00("09802", "00"),
    
    /**
     * 解锁金额
     */
    accounting_point_def_09803_00("09803", "00"),
    
    /**
     * 直接支付（国付宝账户支付）
     */
    accounting_point_def_00100_00("00100", "00"),
    
    /** 大宗入金 */
    accounting_point_def_00200_00("00200", "00"),
    
    /** 大宗划拨收益 */
    accounting_point_def_00201_00("00201", "00"),
    
    /** 大宗出金 */
    accounting_point_def_00202_00("00202", "00"),
    
    /**
     * 直接支付(网银)
     */
    accounting_point_def_00100_01("00100", "01"),
    /**
     * 直接支付--重复支付
     */
    accounting_point_def_00100_02("00100", "02"),
    /**
     * 充值
     */
    accounting_point_def_00500_00("00500", "00"),
    /**
     * 充值--重复支付 
     */
    accounting_point_def_00500_01("00500", "01"),
    /**
     * 充值--信用卡充值 
     */
    accounting_point_def_00500_02("00500", "02"),
    /**
     * 付款到国付宝
     */
    accounting_point_def_00900_00("00900", "00"),

    /**
     * 担保支付申请（网银支付）
     */
    accounting_point_def_00400_00("00400", "00"),
    /**
     * 担保支付申请（国付宝账户支付）
     */
    accounting_point_def_00400_01("00400", "01"),
    /**
     * 担保支付申请（重复支付）
     */
    accounting_point_def_00400_02("00400", "02"),
    /**
     * 担保支付完成
     */
    accounting_point_def_00401_00("00401", "00"),

    /**
     * 担保支付部分完成
     */
    accounting_point_def_00401_01("00401", "01"),

    /**
     * 担保支付取消（国付宝账户支付）
     */
    accounting_point_def_00402_00("00402", "00"),

    /**
     * 担保支付取消申请（网银支付）
     */
    accounting_point_def_00402_01("00402", "01"),

    /**
     * 担保支付取消审核（网银支付）
     */
    accounting_point_def_00402_02("00402", "02"),

    /**
     * 单笔付款到银行（申请）
     */
    accounting_point_def_00700_00("00700", "00"),
    /**
     * 单笔付款到银行（审核通过）
     */
    accounting_point_def_00700_01("00700", "01"),
    /**
     * 单笔付款到银行（审核拒绝）
     */
    accounting_point_def_00700_02("00700", "02"),
    /**
     * 提现（申请）
     */
    accounting_point_def_00800_00("00800", "00"),
    /**
     * 提现（审核通过）
     */
    accounting_point_def_00800_01("00800", "01"),
    /**
     * 提现（审核拒绝）
     */
    accounting_point_def_00800_02("00800", "02"),

    /**
     * 网银重复支付冲正（申请）
     */
    accounting_point_def_09900_00("09900", "00"),
    /**
     * 网银重复支付冲正（审核）
     */
    accounting_point_def_09900_01("09900", "01"),

    /**
     * 信用卡充值冲正（申请）
     */
    accounting_point_def_09901_00("09901", "00"),
    /**
     * 信用卡充值冲正（审核）
     */
    accounting_point_def_09901_01("09901", "01"),
    /**
     * 付款到关联账户
     */
    accounting_point_def_00901_00("00901", "00"),
    
    /**
     * 退款到国付宝账户
     */
    accounting_point_def_01200_00("01200", "00"),
    /**
     * 退款到银行账户（申请）
     */
    accounting_point_def_01200_01("01200", "01"),
    /**
     * 退款到银行账户（审核-通过）
     */
    accounting_point_def_01200_02("01200", "02"),
    /**
     * 退款到银行账户（审核-拒绝）
     */
    accounting_point_def_01200_03("01200", "03"),
    
    /**
     * 付款退款到银行账户（申请）
     */
    accounting_point_def_01201_00("01201", "00"),
    /**
     * 付款退款到银行账户（审核）
     */
    accounting_point_def_01201_01("01201", "01"),
    /**
     * 付款退款到银行账户（审核-拒绝）
     */
    accounting_point_def_01201_02("01201", "02"),
    /**
     * 收益管理 审核通过
     */
    accounting_point_def_09700_00("09700", "00");

    public final String inttxncd;

    public final String accountingPointDef;

    private AccountingPointDef_BAK(String inttxncd, String accountingPointDef) {
        this.inttxncd = inttxncd;
        this.accountingPointDef = accountingPointDef;
    }

    @Override
    public String toString() {
        return this.accountingPointDef;
    }

    /**
     * 根据内部交易码返回记账点
     */
    public static AccountingPointDef_BAK get(IntTxnCd intTxnCd) {
        if (IntTxnCd._00100.equals(intTxnCd)) {
            return AccountingPointDef_BAK.accounting_point_def_00100_01;
        } else if (IntTxnCd._00500.equals(intTxnCd)) {
            return AccountingPointDef_BAK.accounting_point_def_00500_00;
        } else {
            throw new RuntimeException("尚未定义内部交易码[" + intTxnCd
                    + "]和记账点的对应！ the map of intTxnCd to acctPointDef is undefined.");
        }
    }
    /**
     * 根据内部交易码返回记账点，重复支付记账点
     */
    public static AccountingPointDef_BAK getRePayAccountingPoint(IntTxnCd intTxnCd) {
        if (IntTxnCd._00100.equals(intTxnCd)) {
            return AccountingPointDef_BAK.accounting_point_def_00100_02;
        } else if (IntTxnCd._00500.equals(intTxnCd)) {
            return AccountingPointDef_BAK.accounting_point_def_00500_01;
        } else if (IntTxnCd._00400.equals(intTxnCd)) {
            return AccountingPointDef_BAK.accounting_point_def_00400_02;
        } else if (IntTxnCd._09900.equals(intTxnCd)) {
            return AccountingPointDef_BAK.accounting_point_def_09900_00;
        } else if (IntTxnCd._09901.equals(intTxnCd)) {
            return AccountingPointDef_BAK.accounting_point_def_09901_00;
        } else {
            throw new RuntimeException("尚未定义的重复支付记账点，内部交易码[" + intTxnCd
                    + "]！ the map of intTxnCd to acctPointDef is undefined.");
        }
    }
}
